package cn.car91.utils;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.lidroid.xutils.util.LogUtils;

/**
 * 解析服务器端返回的json数据工具类 文件 cn.car91.utils.Car91JsonUtil.java
 *
 * @author 周海刚 时间 2014年11月20日
 */
public class Car91JsonUtil {
    /**
     * 从一个JSON 对象字符格式中得到一个java对象，形如：
     * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}
     *
     * @param object
     * @param clazz
     * @return
     */
    public static Object getDTO(String jsonString, Class clazz) {
        try {
            return JSON.parseObject(jsonString, clazz);
        } catch (Exception e) {
            return getDTOSecond(JsonOperation(jsonString), clazz);
        }
    }

    private static Object getDTOSecond(String jsonString, Class clazz) {
        try {
            return JSON.parseObject(jsonString, clazz);
        } catch (Exception e) {
            LogUtils.e(jsonString);
            LogUtils.e(e.toString());
            return null;
        }
    }

    /**
     * 从一个JSON数组得到一个java对象集合
     *
     * @param object
     * @param clazz
     * @return
     */
    public static List getDTOList(String jsonString, Class clazz) {
        try {
            //LogUtils.e("json", jsonString);
            return JSON.parseArray(jsonString, clazz);
        } catch (Exception e) {
            return getDTOListSecond(JsonOperation(jsonString), clazz);
        }
    }

    private static List getDTOListSecond(String jsonString, Class clazz) {
        try {
            return JSON.parseArray(jsonString, clazz);
        } catch (Exception e) {
            LogUtils.e(jsonString);
            LogUtils.e(e.toString());
            return new ArrayList();
        }
    }

    private static String JsonOperation(String jsonString) {
        jsonString = jsonString.replaceAll("\"\"", "null");
        jsonString = jsonString.replaceAll("\"true\"", "true");
        jsonString = jsonString.replaceAll("\"false\"", "false");
        jsonString = jsonString.replaceAll("<([^>]*)>", "");
        return jsonString;
    }
}    
  